// 这是路由处理函数模块

// 导入数据库操作模块
const db = require('../db/index')

// 获取文章分类列表的处理函数
exports.getComments = (req, res) => {
    // console.log(req.query)
    const sql = `SELECT * FROM bs_comments WHERE target=? AND type=?`
    // 执行 SQL 语句，根据用户名查询用户的信息
    db.query(sql,[req.query.source,req.query.type], (err, results) => {
        // console.log(results[0])
        // 执行 SQL 语句失败
        if (err) return res.cc(err)
        const commDisplayList=results.map(item=>{
            let is_liking
            let like_count
            if(item.likedIds){
                let likeArr = item.likedIds.split('%').filter(item => !item.trim() === false)
                 like_count=likeArr.length
                const index = likeArr.indexOf(String(req.user.id))
                index !== -1? is_liking=true:is_liking=false
            }else {
                like_count=0
                is_liking=false
            }
            return {
                com_id:item.com_id,
                mic_id:item.mic_id,
                aut_name: item.aut_name,
                aut_photo: item.aut_photo,
                content:item.content,
                pubDate:item.pubDate,
                target:item.target,
                type:item.type,
                is_liking,
                like_count,
            }
        })
       res.send(commDisplayList)
    })
}

// 获得文章的处理函数
exports.addComments = (req, res) => {
    // const commInfo=req.body
    const sql = `SELECT username,user_pic FROM bs_users WHERE id=?`
    // 执行 SQL 语句，根据用户名查询用户的信息
    db.query(sql, req.user.id, (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)
        const newComm={
            mic_id:req.body.mic_id,
            aut_id:req.user.id,
            aut_name: results[0].username,
            aut_photo: results[0].user_pic,
            content:req.body.content,
            pubDate:new Date(),
            target:req.body.target,
            type:req.body.type
        }
        const sql = 'INSERT INTO bs_comments set ?'
        db.query(sql,newComm , (err, results) => {
            // 判断 SQL 语句是否执行成功
            if (err) return res.cc(err)
            if (results.affectedRows !== 1) return res.cc('注册用户失败，请稍后再试！')
            // 注册用户成功
            res.cc(newComm, 0)
        })
    })
}

// 点赞 的处理函数
exports.addCommentLike = (req, res) => {
    console.log(req.body.target)
    const sqlStr = 'SELECT likedIds FROM bs_comments WHERE com_id=?'
    db.query(sqlStr, Number(req.body.target), (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)
        results[0].likedIds
            ? results[0].likedIds += req.user.id + '%'
            : results[0].likedIds = req.user.id + '%'
        // console.log(results[0].likedIds)
        const sql = 'UPDATE bs_comments set likedIds=? WHERE com_id=?'
        db.query(sql, [results[0].likedIds, req.body.target], (err, result) => {
            // 判断 SQL 语句是否执行成功
            if (err) return res.cc(err)
            if (result.affectedRows !== 1) return res.cc('数据录入失败，请稍后再试！')
            // 成功
            res.cc('更新成功！', 0)
        })
    })

}

// 取消点赞 的处理函数
exports.deleteCommentLike = (req, res) => {
    // console.log(req.params.target)
    const sqlStr = 'SELECT likedIds FROM bs_comments WHERE com_id=?'
    db.query(sqlStr, Number(req.params.target), (err, results) => {
        // 执行 SQL 语句失败
        if (err) return res.cc(err)
        let likeArr = results[0].likedIds.split('%').filter(item => !item.trim() === false)
        const index = likeArr.indexOf(String(req.user.id))
        if (index !== -1) likeArr.splice(index, 1)
        // console.log(likeArr)
        let likeStr
        if (likeArr.length === 0) {
            likeStr = null
        } else if (likeArr.length === 1) {
            likeStr = likeArr.join('%') + '%'
        } else {
            likeStr = likeArr.join('%')
        }
        console.log(likeStr)
        const sql = 'UPDATE bs_comments set likedIds=? WHERE com_id=?'
        db.query(sql, [likeStr, req.params.target], (err, result) => {
            // 判断 SQL 语句是否执行成功
            if (err) return res.cc(err)
            if (result.affectedRows !== 1) return res.cc('数据录入失败，请稍后再试！')
            // 成功
            res.cc('更新成功！', 0)
        })
    })
}
